让我们看一下下表“Products”(“产品”):
ProductID | ProductName | SupplierID | CategoryID | Unit | Price |
---|---|---|---|---|---|
1 | Chais | 1 | 1 | 10 boxes x 20 bags | 18.00 |
2 | Chang | 1 | 1 | 24 - 12 oz bottles | 19.00 |
3 | Aniseed Syrup | 1 | 2 | 12 - 550 ml bottles | 10.00 |
4 | Chef Anton's Cajun Seasoning | 2 | 2 | 48 - 6 oz jars | 22.00 |
5 | Chef Anton's Gumbo Mix | 2 | 2 | 36 boxes | 21.35 |
假设列“UnitsOnOrder”是可选的并且可以包含值NULL。
考虑以下指令 SELECT:
SELECT ProductName, UnitPrice * (UnitsInStock + UnitsOnOrder)
FROM Products
在上面的示例中,如果任何“UnitsOnOrder”值等于NULL,则结果将为NULL。
如果表达式等于 NULL,则 MySQL IFNULL() 函数允许您返回替代值:
SELECT ProductName, UnitPrice * (UnitsInStock + IFNULL(UnitsOnOrder, 0))
FROM Products
或者我们可以使用 COALESCE() 函数,例如:
SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products
如果表达式的值为 NULL,则 SQL Server ISNULL() 函数允许您返回替代值:
SELECT ProductName, UnitPrice * (UnitsInStock + ISNULL(UnitsOnOrder, 0))
FROM Products
或者我们可以使用 COALESCE() 函数,例如:
SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products
如果表达式为空,MS Access 函数 IsNull() 返回 TRUE (-1),否则返回 FALSE (0):
SELECT ProductName, UnitPrice * (UnitsInStock + IIF(IsNull(UnitsOnOrder), 0, UnitsOnOrder))
FROM Products
Oracle NVL() 函数实现相同的结果:
SELECT ProductName, UnitPrice * (UnitsInStock + NVL(UnitsOnOrder, 0))
FROM Products
或者我们可以使用 COALESCE() 函数,例如:
SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products